package com.ruoyi.ysg.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.ysg.domain.*;

/**
 * 课程管理Service接口
 *
 * @author xsz
 * @date 2025-09-24
 */
public interface IYsgCourseService
{
    /**
     * 查询课程管理
     *
     * @param id 课程管理主键
     * @return 课程管理
     */
    public YsgCourse selectYsgCourseById(Long id);

    /**
     * 查询课程管理列表
     *
     * @param ysgCourse 课程管理
     * @return 课程管理集合
     */
    public List<YsgCourse> selectYsgCourseList(YsgCourse ysgCourse);

    /**
     * 新增课程管理
     *
     * @param ysgCourse 课程管理
     * @return 结果
     */
    public int insertYsgCourse(YsgCourse ysgCourse);

    /**
     * 修改课程管理
     *
     * @param ysgCourse 课程管理
     * @return 结果
     */
    public int updateYsgCourse(YsgCourse ysgCourse);

    /**
     * 批量删除课程管理
     *
     * @param ids 需要删除的课程管理主键集合
     * @return 结果
     */
    public int deleteYsgCourseByIds(Long[] ids);

    /**
     * 删除课程管理信息
     *
     * @param id 课程管理主键
     * @return 结果
     */
    public int deleteYsgCourseById(Long id);

    List<YsgStudent> selectAssociatedStudentList(YsgCourseStudent ysgCourseStudent);

    int AssociateStudent(YsgCourseStudent ysgCourseStudent);

    List<Map> getCourseSchedule(YsgCourseSchedule ysgCourseSchedule);

    void addCourseSchedule(String jsonStr);

    List<YsgCourseSchedule> getTodayCourses(YsgCourseSchedule vo);

    List<YsgSignRecord> getSignInRecords(YsgSignRecord ysgSignRecord);

    void signIn(YsgSignRecord ysgSignRecord);

    void signIn(List<YsgSignRecord> signRecords);

    void rate(YsgSignRecord ysgSignRecord);

    /**
     * 通过id查询单个打卡记录
     * 
     * @param id 打卡记录主键
     * @return 打卡记录
     */
    YsgSignRecord getSignInRecordById(Long id);
}
